dbtのpersist_docsを設定してみた
はじめに
データアナリティクス事業本部のおざわです。 dbtのpersist_docsの設定を触る機会があったのでブログにしてみました。
今回使用したdbtのバージョンです。
❯ dbt debug 02:45:35 Running with dbt=1.7.3 02:45:35 dbt version: 1.7.3 ・・・略・・・ 02:45:35 adapter type: redshift 02:45:35 adapter version: 1.7.0
persist_docsとは
persist_docsは、dbtのプロジェクトで設定できるオプションです。このオプションを設定しておくと、モデルやシードといった各種リソース(sourcesには非対応)に対して、yamlファイルに記載したテーブルやカラムのdescriptionの内容をデータベースに永続化してくれます。
データの利用者が直接DBを見てdbtのドキュメントと同じ内容を確認できますし、管理の面でもyamlに書いておけばすむので楽ですね。
サポートしているアダプター
現時点で対応しているアダプターは以下のとおりです。 Databricksに関してはいくつか注意書きがありましたので、詳しくはドキュメントをご参照ください。
- Postgres
- Redshift
- Snowflake
- BigQuery
- Databricks
- Apache Spark
設定方法
設定方法はドキュメントにあるようにyamlに書いてモデル全体に適用したり、configブロックを使用してSQLファイルに書くこともできます。
yamlで設定する場合:
version: 2 models: my_dbt_project: +persist_docs: relation: true columns: true
configブロックでの設定例:
{{ config( persist_docs={"relation": true, "columns": true} ) }} select ...
descriptionは下記の内容をmodelのyamlファイルに書いています。
version: 2 models: - name: customers description: My dearest customers columns: - name: customer_id description: Key to identify - name: first_order_date description: Customer first ordered from us
設定後にdbt run
を実行します。
確認方法
今回はRedshiftを使用していますのでRedshiftでの確認方法になります。
以下のSQLを走らせると、yamlに記載した各descriptionが設定されていました。
テーブルのdescription
select obj_description('my_dbt_schema.test_table'::regclass);
カラムのdescription(1つ目のカラム)
select col_description( 'my_dbt_schema.test_table'::regclass, 1::integer)
おわりに
以上、persist_docsを試してみたので共有でした。